package org.jshand.cloud.controller;

import lombok.extern.slf4j.Slf4j;
import org.jshand.cloud.service.OrderProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * 作者: 张金山
 * 创建时间：2025/2/11 19:33   星期二
 * 描述： 服务提供者控制器
 * 项目: spring-cloud-alibaba - org.jshand.cloud.controller
 * 作者的博客:  https://blog.fulfill.com.cn
 */

@Slf4j
@RestController
@RequestMapping("/consumer")
public class ConsumerUserController {


    /**
     * 获取当前应用名称
     */
    @Value("${spring.application.name}")
    private String appName;


    @Autowired
    private OrderProviderService orderProviderService;


    /**
     * 普通测试方法
     * @return
     */
    @RequestMapping("/user/index")
    String index(){
        String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        return appName+"@"+time;
    }


    /**
     * 使用OpenFeign客户端封装DiscoveryClient的操作
     * @param userId
     * @return
     */

    @RequestMapping("/user/order/{userId}")
    String getProvider(@PathVariable("userId") String userId){

        String orderInfo = orderProviderService.order(userId);
        return "用户微服务(使用OpenFeign)："+orderInfo;
    }


    /**
     * 使用OpenFeign客户端封装DiscoveryClient的操作
     * @param userId
     * @return
     */

    @RequestMapping("/user/colony/{userId}")
    String colony(@PathVariable("userId") String userId){

        log.info("基于使用负载均衡器（LoadBalancer）客户端进行服务调用，user ID：{}",userId);

        String orderInfo = orderProviderService.colony(userId);
        return "用户微服务(使用OpenFeign-集群)："+orderInfo;
    }


}
